package br.com.divulgaqui.managedbean;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import br.com.divulgaqui.client.CategoriaServiceBeanLocal;
import br.com.divulgaqui.client.MarcaServiceBeanLocal;
import br.com.divulgaqui.client.PessoaServiceBeanLocal;
import br.com.divulgaqui.client.VendaServiceBeanLocal;
import br.com.divulgaqui.entity.Categoria;
import br.com.divulgaqui.entity.Marca;
import br.com.divulgaqui.entity.Pessoa;

import com.ocpsoft.pretty.faces.annotation.URLAction;
import com.ocpsoft.pretty.faces.annotation.URLMapping;
import com.ocpsoft.pretty.faces.annotation.URLMappings;

@ManagedBean
@ViewScoped
@URLMappings(mappings={
		@URLMapping(id = "realtorios", pattern = "/admin/relatorios", viewId = "/admin/relatorio/relatorios.jsf"),
		@URLMapping(id = "qtdPacotesPorCliente", pattern = "/admin/relatorio/pacotes-por-cliente", viewId = "/admin/relatorio/qtdPacotesPorClientes.jsf"),
		@URLMapping(id = "qtdProdutosPorCategoria", pattern = "/admin/relatorio/produtos-por-categoria", viewId = "/admin/relatorio/qtdProdutosPorCategoria.jsf"),
		@URLMapping(id = "qtdProdutosPorMarca", pattern = "/admin/relatorio/produtos-por-marca", viewId = "/admin/relatorio/qtdProdutosPorMarca.jsf"),
		@URLMapping(id = "produtosPorMarca", pattern = "/admin/relatorio/produtos-por-marca-total", viewId = "/admin/relatorio/produtosPorMarca.jsf"),
		@URLMapping(id = "categoriaPorNivel", pattern = "/admin/relatorio/categorias-por-nivel", viewId = "/admin/relatorio/categoriasPorNivel.jsf"),
		@URLMapping(id = "pessoasInativas", pattern = "/admin/relatorio/pessoas-inativas", viewId = "/admin/relatorio/clientesInativos.jsf")
		})
public class RelatorioManagedBean extends BaseBean{
	
	private static final long serialVersionUID = 1L;
	private List<Pessoa> pessoas;
	private List<Categoria> categorias;
	private List<Marca> marcas;
	private Integer nivel;
	@EJB
	private VendaServiceBeanLocal vendaServiceBeanLocal;
	@EJB
	private CategoriaServiceBeanLocal categoriaServiceBeanLocal;
	@EJB
	private MarcaServiceBeanLocal marcaServiceBeanLocal;
	
	@EJB
	private PessoaServiceBeanLocal pessoaServiceBeanLocal;
	
	@PostConstruct
	public void init(){
		pessoas = new ArrayList<Pessoa>();
		setCategorias(new ArrayList<Categoria>());
		nivel = new Integer(1);
	}
	
	@URLAction(mappingId="pessoasInativas", onPostback=false)
	public void recuperarPessoaInativas(){
		pessoas = pessoaServiceBeanLocal.findPessoasInativas();
	}
	
	@URLAction(mappingId="qtdPacotesPorCliente",onPostback=false)
	public void recuperarQtpPacotesAnunciosPorClientes(){
		pessoas = vendaServiceBeanLocal.recuperarQtpPacotesAnunciosPorClientes();
	}
	
	@URLAction(mappingId="qtdProdutosPorCategoria",onPostback=false)
	public void recuperarQtpProdutosPorCategoria(){
		setCategorias(categoriaServiceBeanLocal.qtdProdutosPorCategoriaNivel3(true));
	}
	
	@URLAction(mappingId="qtdProdutosPorMarca",onPostback=false)
	public void recuperarQtdProdutosPorMarca(){
		marcas = marcaServiceBeanLocal.qtdProdutosPorMarca();
	}
	
	@URLAction(mappingId="produtosPorMarca",onPostback=false)
	public void recuperarProdutosPorMarca(){
		marcas = marcaServiceBeanLocal.qtdProdutosPorMarca();
	}
	
	@URLAction(mappingId="categoriaPorNivel",onPostback=false)
	public void categoriaPorNivel(){
		categorias = categoriaServiceBeanLocal.listarCategoriaPorNivel(nivel);
	}

	public List<Pessoa> getPessoas() {
		return pessoas;
	}

	public void setPessoas(List<Pessoa> pessoas) {
		this.pessoas = pessoas;
	}

	public List<Categoria> getCategorias() {
		return categorias;
	}

	public void setCategorias(List<Categoria> categorias) {
		this.categorias = categorias;
	}

	public List<Marca> getMarcas() {
		return marcas;
	}

	public void setMarcas(List<Marca> marcas) {
		this.marcas = marcas;
	}

	public Integer getNivel() {
		return nivel;
	}

	public void setNivel(Integer nivel) {
		this.nivel = nivel;
	}

}
